//
//  HomeTableViewController.swift
//  SinaWeibo25
//
//  Created by David on 16/3/5.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
//导入命名控件
import AFNetworking
import SVProgressHUD

//定义首页重用标识符  手写代码 1.注册可重用标识符  2.从缓存中根据重用标识符 获取cell
//storyboard 直接属性设置栏中设置重用标识符即可
private let HomeCellId = "HomeCellId"
class HomeTableViewController: BaseTableViewController {
    
    
    //数据源属性
    lazy var statuses = [Status]()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        if !userLogin {
            
            
            //设置访客视图的信息
            visitorLoginView?.setupInfoWith("关注一些人,回到这里看看有什么惊喜", imageName: nil)
            //用户没有登录
            return
        }
       
        
        //准备tableView
        prepareForTableView()
        
        loadData()
    }
    
    
    private func prepareForTableView() {
        //注册cell
        // OC -> [UITableViewCell class]  swift -> UITableViewCell.self
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        //设置cell的固定高度
        //tableView自动计算行高需要设置两个属性
        //设置预估行高 尽量接近真实行高   contentSize = estimatedRowHeight * count
        tableView.estimatedRowHeight = 300
        //tableView 固定行高 就应该设置 自动计算
        //注意: 必须对contentView底部添加约束  告诉自动布局系统 contentView的底部应该放在那里
        tableView.rowHeight = UITableViewAutomaticDimension
        
        //设置分割线
        tableView.separatorStyle = .None
        
        refreshControl = UIRefreshControl()
        
        //添加事件
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
    }
    
    @objc private func loadData() {
        //加载数据之前 开始转动小菊花
        refreshControl?.beginRefreshing()
        Status.loadHomeData { (array) -> () in
            //数据加载结束之后 停止转动小菊花
            self.refreshControl?.endRefreshing()
            guard let list = array else {
                //界面层 就应该和用户交互
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                return
            }
            //保存数组
            self.statuses = list
            //刷新页面
            self.tableView.reloadData()
        }
    }

}



//tableView 的数据源方法
//重复遵守协议会保存
extension HomeTableViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //textLabel 是延迟加载  调用的时候就会被实例化 并且被添加到contentView中
        //        cell.textLabel?.text = statuses[indexPath.row].user?.name
        
        
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! StatusCell
        let s = statuses[indexPath.row]
        cell.status = s
        
        return cell
    }
}
